package cn.edu.lcu.cs.architecture.mvc.usermanage.model;


import cn.edu.lcu.cs.architecture.mvc.usermanage.entity.User;
import cn.edu.lcu.cs.architecture.mvc.usermanage.service.UserService;
import cn.edu.lcu.cs.architecture.mvc.usermanage.service.UserServiceImpl;
import cn.edu.lcu.cs.architecture.mvc.usermanage.util.Observable;

import java.util.List;

/**
 * MVC架构，用户查询模型
 */
public class UserSearchModel extends Observable {
    private List<User> users; // 模型数据
    private String searchKey = ""; // 查询关键字

    private UserService userService = new UserServiceImpl();

    /**
     * 设置新模型数据，并通知观察者（视图更新界面）。
     *
     * @param users
     */
    public void setUsers(List<User> users) {
        this.users = users; // 更新模型数据
        notifyObservers(users); // 将模型数据users推送给观察者
    }

    /**
     * 根据用户名模糊查询，重新设置模型数据users。
     *
     * @param username
     */
    public void search(String username) {
        searchKey = username; // 保存查询关键字
        setUsers(userService.findByUsernameLikely(searchKey));
    }

    /**
     * 删除用户，重新设置模型数据users。
     *
     * @param id
     */
    public void delete(Long id) {
        if (userService.delete(id) == 1) {
            setUsers(userService.findByUsernameLikely(searchKey));
        }
    }

    /**
     * 更新旧记录，重新设置模型数据users。
     *
     * @param user
     * @return
     */
    public boolean edit(User user) {
        if (userService.update(user) == 1) {
            setUsers(userService.findByUsernameLikely(searchKey));
            return true;
        } else {
            return false;
        }
    }
}
